package com.zf.thread_pool.thread_first;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * 自定义工作队列，当核心线程全部被占用时，不加入队列，直接尝试“获取已有/创建新的”的线程
 */
public class CustomThreadFirstWorkQueue extends ArrayBlockingQueue<Runnable> {

    public CustomThreadFirstWorkQueue(int capacity) {
        super(capacity);
    }

    /**
     * 直接返回失败，表示不加入队列，直接去“获取已有/创建新的”线程，
     * 当无法获取到线程时，执行拒绝策略，在自定义的拒绝策略 {@link CustomThreadFirstRejectedPolicy}中先尝试入队，入队失败则执行 CallerRunsPolicy 拒绝策略
     */
    @Override
    public boolean offer(Runnable runnable) {
        return false;
    }
}